package com.snowcattle.game.common.util;


public class NumberUtil {

    public static long merge(int hi, int lo) {
        long redoLong = 0;
        long a1 = ((long) hi << 32) & 0xFFFFFFFF00000000L;
        long b1 = lo & 0x00000000FFFFFFFFL;
        redoLong = a1 | b1;
        return redoLong;
    }

    public static int cutHi(long v) {
        return (int) (v >> 32);
    }

    public static int cutLo(long v) {
        v &= 0xFFFFFFFFL;
        return (int) v;
    }

    public static int distanceSquare(int x1, int y1, int x2, int y2) {
        int xDiff = x1 - x2;
        int yDiff = y1 - y2;
        return xDiff * xDiff + yDiff * yDiff;
    }


    public static int parseInt(final String s) {
        if (s == null)
            throw new NumberFormatException("Null string");

        int num = 0;
        int sign = -1;
        final int len = s.length();
        final char ch = s.charAt(0);
        if (ch == '-') {
            if (len == 1)
                throw new NumberFormatException("Missing digits:  " + s);
            sign = 1;
        } else {
            final int d = ch - '0';
            if (d < 0 || d > 9)
                throw new NumberFormatException("Malformed:  " + s);
            num = -d;
        }

        final int max = (sign == -1) ?
                -Integer.MAX_VALUE : Integer.MIN_VALUE;
        final int multmax = max / 10;
        int i = 1;
        while (i < len) {
            int d = s.charAt(i++) - '0';
            if (d < 0 || d > 9)
                throw new NumberFormatException("Malformed:  " + s);
            if (num < multmax)
                throw new NumberFormatException("Over/underflow:  " + s);
            num *= 10;
            if (num < (max + d))
                throw new NumberFormatException("Over/underflow:  " + s);
            num -= d;
        }

        return sign * num;
    }


    public static int parseValidInt(final String s) {
        int num = 0;
        int sign = -1;
        final int len = s.length();
        final char ch = s.charAt(0);
        if (ch == '-')
            sign = 1;
        else
            num = '0' - ch;

        int i = 1;
        while (i < len)
            num = num * 10 + '0' - s.charAt(i++);

        return sign * num;

    }

    public static void main(String[] args) {
//		Random rnd = new Random();
//		long t1 = System.nanoTime();
//		String s = "-23445";
//		for(int i=0;i<1000000;i++){
//			int j = Integer.parseInt(s);
//		}
//		long t2 = System.nanoTime();
//		for(int i=0;i<1000000;i++){
//			int j = parseInt(s);
//		}
//		long t3 = System.nanoTime();
//		for(int i=0;i<1000000;i++){
//			int j = parseValidInt(s);
//		}
//		long t4 = System.nanoTime();
//		System.out.printf("%s\n%s\n%s\n", (t2 - t1)/1000000L,(t3-t2)/1000000L,(t4-t3)/1000000L );
        System.out.println(67132441 >> 25);
    }
}
